package com.gwctv.config;

import com.gwctv.properties.AliOssProperties;
import com.gwctv.utils.AliOssUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 配置类，对第三方以及不在启动类所在包及其子包中的类的bean对象进行集中管理
 * 用于创建AliOssUtil对象
 */
@Slf4j
@Configuration
public class OssConfiguration {
    /**
     * @param aliOssProperties 阿里云配置项属性对象，这里的参数可以自动注入，注意AliOssProperties类上需加上@Component注解
     * @return AliOssUtil类的bean对象
     * @Bean注解表示此方法返回的是AliOssUtil类的bean对象，默认bean对象名称是方法名
     * @ConditionalOnMissingBean 防止AliOssUtil类的对象在项目中创建多个，意思是没有AliOssUtil类的bean对象时才创建
     */
    @Bean
    @ConditionalOnMissingBean
    public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties) {
        log.info("开始创建阿里云文件上传工具类对象：{}", aliOssProperties);
        //通过aliOssProperties对象获取阿里云oss配置项参数
        // 创建AliOssUtil对象并返回
        return new AliOssUtil(aliOssProperties.getEndpoint(),
                aliOssProperties.getAccessKeyId(),
                aliOssProperties.getAccessKeySecret(),
                aliOssProperties.getBucketName());
    }
}
